package day03;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

/**
 * 将当前目录下的所有文件都复制一份，复制的文件命名为:原
 * 文件名_cp.后缀
 * 比如原文件为:test.dat
 * 复制后的文件为:test_cp.dat
 *
 *
 * @author Xiloer
 *
 */
public class Test03 {
    /**
     * 思路:
     * 分为几部分考虑.
     * 第一个是要获取到当前目录中的所有文件(思考哪个API可以解决)
     * 第二个是获取到的每一个文件都要复制(复制用什么API)
     * 第三个是复制的文件名，如何重新组建xxx_cp.xxx的名字?
     *      这里要将原文件名拆开后想办法拼接_cp.
     */
    public static void main(String[] args) throws IOException {
        File srcDir = new File("./tedu-work/src/main/java/day03");
        File src = null;
        File dest = null;
        String destPath = "";
        Date date = new Date();
        int count = 0;
        //判断是否是目录
        if (srcDir.isDirectory()) {
            File[] files = srcDir.listFiles();
            for (File file : files) {
                src = file;
                String wholefileName = src.getName();
                //将文件名和文件后缀区分开来
                int dotIndex = wholefileName.lastIndexOf(".");
                String fileName = wholefileName.substring(0, dotIndex);
                String fileExtend = wholefileName.substring(dotIndex);
                //规定复制文件的文件名
                //此处用到了File.separator获取系统使用的文件路径分隔符，具有跨平台的优点
                destPath = src.getParent() + File.separator + fileName + "_"
                        + date.toString().replace(":", "").replace(" ", "_") + fileExtend;
                System.out.println(destPath);
                dest = new File(destPath);
                dest.createNewFile();
                FileInputStream fisSrc = new FileInputStream(src);
                FileOutputStream fosDest = new FileOutputStream(dest);
                byte[] by = new byte[1024];
                int length;
                while ((length = fisSrc.read(by)) != -1) {
                    fosDest.write(by, 0, length);
                    count++;
                }
                try {
                    if (fisSrc != null) {
                        fisSrc.close();
                    }
                    if (fosDest != null) {
                        fosDest.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("总共复制了:" + count + "个文件.");
        }
    }
}

